package cn.tedu.test.luban.demo.dubbo;

import com.tarena.demo.luban.protocol.cart.param.CartDeleteParam;
import com.tarena.luban.demo.cart.api.CartApi;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;

public class Consumer {
    public static void main(String[] args) {
        //获取一个dubbo给我返回的代理对象
        CartApi proxy = getProxy();
        CartDeleteParam cartDeleteParam=new CartDeleteParam();
        cartDeleteParam.setUserId("100");
        cartDeleteParam.setProductCode("200");
        proxy.deleteCart(cartDeleteParam);
    }
    public static CartApi getProxy(){
        //dubbo的consumer端封装到这里
        //想要拿到代理对象,需要启动一个boot,唯一作用就是启动的一瞬间 找到注册中心 拿到注册信息
        //才能封装一个能够建立连接的代理对象.
        DubboBootstrap boot=DubboBootstrap.getInstance();
        //应用名称
        boot.application("order-consumer");
        //必配置 注册中心
        boot.registry(new RegistryConfig("nacos://localhost:8848"));
        //协议 单纯作为consumer 协议没必要配置的
        //调用目标
        ReferenceConfig<CartApi> referenceConfig=new ReferenceConfig<>();
        referenceConfig.setInterface(CartApi.class);
        boot.reference(referenceConfig);
        //可以获取代理对象
        CartApi cartApiProxy = referenceConfig.get();
        System.out.println("获取接口对象类型:"+cartApiProxy.getClass().getName());
        return cartApiProxy;
    }
}
